今天開始要將程式或取的股價資訊稍作整頓,
因此將運用資料科學套件pandas,它是資料科學分析的前置工具。
它可以被用來執行強大的資料分析。以往我們大都使用試算表來當作處理與分析資料的工具。但是試算表有列數量的侷限性限制,超過限制就無法滿足資料分析的需求。對於資料維度也是一個試算表的一大挑戰限制,但,這些Python都可以幫助我們一一實現。
Pandas可說是 Python提供類似Excel試算表的功能,可結合NumPy(Numerical Python的簡稱)的特性,以及試算表和關連式資料庫(Relation Database)的資料操作能力,藉此可用來對資料進行切割、聚合及重構等操作。
當使用Anaconda 3 的版本時,在預設的狀況下會安裝Python、IPython及Jupyter記事本、Pandas。如果沒有安裝Anaconda的話,就需要透過pip來安裝pandas套件。$ pip install pandas
import pandas as pd
pandas提供了3種資料結構,其中最重要的兩個基本資料結構就屬Series與DataFrame,另外一個是Panels。
接下來請先打開Spyder,有機會就跟著我一起學習:
(一) 建立Pandas Series序列
序列(Series)像是一維陣列資料所組成的物件。我們可以使用Python的Series()函式來建立一個Serie:
s = pd.Series([1, 2, 3, 4])
0 1
1 2
2 3
3 4
dtype: int64
輸出結果為兩行。第一行為索引,第二行為Series資料。輸出的每一個row由index標籤(label)及其對應的值所組成。如果在建立Series資料的時候沒有指定index的話,pandas會自動產生從0開始的整數索引標籤。
(二) 建立DataFrame
使用DataFrame()函示來建立。他是一個如同有索引的二維串列。
import pandas as pd
taiwan ={'city':['台北市', '台中市', '高雄市'],
'pop':[2631083, 2816741, 2773401],
'area':[271.7997, 2214.8968, 2951.8524],}
pd.DataFrame(taiwan)
例如透過上面的taiwan字典,我們可以建立一個DataFrame。
(三) 利用DataFrame篩選股市資料
https://www.twse.com.tw/exchangeReport/MI_INDEX?response=csv&date=20220929&type=ALLBUT0999
昨天取出的股價資訊其中一筆如下:
"9914","美利達","666,197","756","121,993,792","184.50","187.00","180.50","181.50","-","3.00","180.50","1","181.50","4","11.38",
通常 “逗點”表示串起前後的資料,因此可以算出16 + 1個欄位,最後一欄為空值
import requests
import pandas as pd
from io import StringIO
dateStr = "20220928"
requestData = requests.get('https://www.twse.com.tw/exchangeReport/MI_INDEX?response=csv&date='
+ dateStr + '&type=ALLBUT0999')
#print(requestData.text)
stockInfo = requestData.text.split('\n')
# 使用for迴圈檢查每一筆資料,保留'",'分隔項目等於17的資料
stockInfo = [x for x in stockInfo if len(x.split('",')) == 17 ]
data = "\n".join(stockInfo)
#利用pd.read_csv轉換為DataFrame的格式
datafr = pd.read_csv(StringIO("\n".join(stockInfo)), header=0)
#刪除空值欄位
datafr = datafr.drop(columns=['Unnamed: 16'])
# 使用DataFrame格式篩選美利達股票的證券代號
filter_df = datafr[datafr["證券代號"] == "9914"]
# 列印指定股價內容
print(filter_df)
產生結果畫面如下:
對於不常寫程式的人,今天可能會有點頭暈,
但對於常寫程式的人,今天會覺得收穫很多,
不過,寫程式就是要多看多打程式碼,
養成習慣很多語法、邏輯就會漸漸內化到腦中。
今天這樣是不是更有成就感了,我們明天再接著精緻化這個功能。